/*
 * Copyright (c) 2020 Tunaiyi
 * Tny Framework is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
 * NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */

package com.tny.game.basics.mould;

import com.google.common.collect.ImmutableSet;
import com.tny.game.basics.item.*;
import com.tny.game.common.version.*;

import java.util.*;

public interface FeatureModel extends Model {

    Feature getFeature();

    Optional<Feature> getParent();

    Optional<Version> getOpenVersion();

    Collection<FeatureOpenPlan> getOpenPlan();

    int getOpenLevel(FeatureOpenMode<?> mode);

    boolean isCanOpen(FeatureLauncher explorer, FeatureOpenMode<?> openMode);

    boolean isEffect();

    int getPriority();

    @Override
    default Set<Object> tags() {
        return ImmutableSet.of();
    }

}
